package com.junsi.system.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.junsi.system.domain.SysArea;
import com.junsi.system.vo.SysAreaCity;

/**
 * 地区 数据层
 * 
 * @author ymx
 * @date 2019-05-29
 */
public interface SysAreaMapper 
{
	/**
     * 查询地区信息
     * 
     * @param areaCode 地区ID
     * @return 地区信息
     */
	public SysArea selectAreaById(String areaCode);
	
	/**
	 * 查询地区信息
	 * 
	 * @param areaCode 地区ID
	 * @return 地区信息
	 */
	public List<SysArea> selectAreaByIds(String areaCode);
	
	/**
	 * 查询地区信息
	 * 
	 * @param areaCode 父级ID
	 * @return 地区信息
	 */
	public List<SysAreaCity> selectAreaAndCity(@Param("areaCode")String areaCode);
	
	/**
	 * 查询地区信息
	 * 
	 * @param areaCode 父级ID
	 * @return 地区信息
	 */
	public List<SysArea> selectAreaByPar(String areaCode);
	
	/**
	 * 查询地区信息Oracle
	 * 
	 * @param areaCode 父级ID
	 * @return 地区信息
	 */
	public List<SysArea> selectAreaByParOracle(String areaCode);
	
	/**
     * 查询地区列表
     * 
     * @param area 地区信息
     * @return 地区集合
     */
	public List<SysArea> selectAreaList(SysArea area);
	
	/**
	 * 查询区域列表
	 * 
	 * @return 区域集合
	 */
	public List<SysArea> selectAreaLeve2();
	
	/**
     * 新增地区
     * 
     * @param area 地区信息
     * @return 结果
     */
	public int insertArea(SysArea area);
	
	/**
	 * 新增地区Oracle
	 * 
	 * @param area 地区信息
	 * @return 结果
	 */
	public int insertAreaOracle(SysArea area);
	
	/**
     * 修改地区
     * 
     * @param area 地区信息
     * @return 结果
     */
	public int updateArea(SysArea area);
	
	/**
     * 删除地区
     * 
     * @param areaCode 地区ID
     * @return 结果
     */
	public int deleteAreaById(String areaCode);
	
	/**
     * 批量删除地区
     * 
     * @param areaCodes 需要删除的数据ID
     * @return 结果
     */
	public int deleteAreaByIds(String[] areaCodes);
	
	/**
	 * 新增区域城市关联
	 * @param areaCode 区域code
	 * @param cityCode 城市code
	 * @return 结果
	 */
	public int insertAreaCity(SysAreaCity areaCity);
	
	/**
	 * 新增区域城市关联Oracle
	 * @param areaCode 区域code
	 * @param cityCode 城市code
	 * @return 结果
	 */
	public int insertAreaCityOracle(SysAreaCity areaCity);

	/**
	 * 删除数据（逻辑删除，更新del_flag字段为1,在表包含字段del_flag时，可以调用此方法，将数据隐藏）
	 * @param areaCodes 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteById(String[] areaCodes);
	
	/**
	 * 删除数据区域城市关联数据
	 * @param areaCodes 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteByArea(String areaCodes);
	
	/**
	 * 查询区域列表
	 *
	 * @return 结果
	 */
	public List<SysArea> selectAreaLeve1();
	
	/**
	 * 查询区域列表
	 *
	 * @return 结果
	 */
	public List<SysArea> selectViewAreaChild(Integer parentCode, Integer quotaId);

	/**
	 * 查询区域树专用
	 * @param area
	 * @return
	 */
	public List<SysArea> selectSysAreaList(SysArea area);
	
	/**
	 * 查询区域树专用Oracle
	 * @param area
	 * @return
	 */
	public List<SysArea> selectSysAreaListOracle(SysArea area);

	/**
	 * 根据指标编码查询区域父级编码
	 * @param quotaId
	 * @return 结果
	 */
	public List<SysArea> selectAreaPar(Integer quotaId);
	
	/**
	 * 修改区域城市关联
	 * @param areaCode 区域code
	 * @param cityCode 城市code
	 * @return 结果
	 */
	public int updateAreaCity(SysAreaCity areaCity);
}